package com.fowo.api.documentCirculation.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;
import java.util.Map;

/**
 * 数据任务执行日志
 * @author yl_ls
 */
@Data
@TableName(value = "data_task_logs", autoResultMap = true)
@Schema(title = "数据任务日志")
public class DataTaskLogs {
    public static final String TYPE_PUSH = "push";
    public static final String TYPE_PULL = "pull";
    /**
     * 主键编号
     */
    @TableId(type = IdType.INPUT)
    private Long id;

    /**
     * 对一次操作唯一的编号
     */
    private Long opId;

    /**
     * 关联数据任务编号
     */
    private Long dataTaskId;

    /**
     * 操作类型名称。push - 下推, pull - 勾稽
     */
    private String type;

    /**
     * 来源主表编号
     */
    private Long fromMainId;

    /**
     * 目标主表编号
     */
    private Long toMainId;

    /**
     * 来源子表编号
     */
    private Long fromSubId;

    /**
     * 目标子表编号
     */
    private Long toSubId;

    /**
     * 数量变更
     */
    private BigDecimal numChange;

    /**
     * 来源行数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> fromRow;

    /**
     * 目标行数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> toRow;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 创建人(操作人)
     */
    private Long createUser;

    /**
     * 是否已撤消操作
     */
    private Boolean cancelled;

    /**
     * 取消人
     */
    private Long canceller;

    /**
     * 取消时间
     */
    private Date cancellationTime;
}
